草庐IT

c++ - ifstream : how to tell if specified file doesn\'t exist

全部标签

c++:ifstream打开问题,为文本文件名传递字符串

这个问题在这里已经有了答案:Nomatchingfunction-ifstreamopen()(1个回答)关闭7年前。我正在尝试将字符串从main传递到另一个函数。此字符串是需要打开的文本文件的名称。据我所见,我传递的字符串很好,但是当我尝试使用ifstream.open(textFileName)时,它并不能正常工作。但是当我手动将其硬编码为ifstream.open("foo.txt")时,它工作得很好。我需要多次使用这个函数,所以我希望能够传入一串文本文件名..这是我的主要内容#ifndefDATA_H#defineDATA_H#include"Data.h"#endif#ifn

c++ - 为什么我不能在 vector 中放置 ifstreams?

以下示例程序不能为我编译clang3.1或gcc4.8:#include#includeusingnamespacestd;intmain(){vectorbla;bla.emplace_back("filename");return0;}但是,我认为emplace_back应该"Insertanewelementattheendofthevector,rightafteritscurrentlastelement.Thisnewelementisconstructedinplaceusingargsastheargumentsforitsconstruction."有谁知道为什么这不

C++ Ifstream 对象等于 nullptr 但它不是指针?

我正在尝试使用ifstream打开文件失败的测试程序。代码如下:-#include#include#includeusingnamespacestd;intmain(){ifstreamifs("wrong_filename.txt");cout::value输出是:-falsetrue如果ifs不是pointer,那么它怎么等于nullptr? 最佳答案 在C++11之前,C++流可以隐式转换为void*。如果流不是处于无错误状态,则结果将是NULL,如果是,则返回其他结果。所以ifs==NULL(不应该与nullptr一起使用,

c++ - 在 C++ 中重置 ifstream 对象的文件结束状态

我想知道是否有办法在C++中重置eof状态? 最佳答案 对于文件,您可以搜索到任何位置。例如,要倒回到开头:std::ifstreaminfile("hello.txt");while(infile.read(...)){/*...*/}//etcetcinfile.clear();//clearfailandeofbitsinfile.seekg(0,std::ios::beg);//backtothestart!如果您已经阅读到最后,则必须按照@JerryCoffin的建议使用clear()重置错误标志。

c++ - ifstream,读取的字节数?

如何获得使用ifstream::read函数读取的字节数?Tell说文件是10个字节,windows说它也是10个字节,但文件中只有8个字节,所以当我读取它时,它只读取8个字节,所以我最终得到了太大的a缓冲区。 最佳答案 您可以调用gcount()了解详情阅读后立即播放。ifs.read(buf,sizeofbuf);std::streamsizebytes=ifs.gcount(); 关于c++-ifstream,读取的字节数?,我们在StackOverflow上找到一个类似的问题:

c++ - 使用 ifstream 检查文件是否成功打开

我有以下将打开一个文件进行阅读。但是,我想检查以确保文件已成功打开,因此我使用失败来查看是否已设置标志。但是,我不断收到以下错误:我是C++新手,因为我来自C。所以不确定我是否理解这个错误:cannotcallmemberfunction‘boolstd::basic_ios::fail()const[with_CharT=char,_Traits=std::char_traits]’withoutobject代码:intdevices::open_file(std::string_file_name){ifstreaminput_stream;input_stream.open(_f

c++ - 使用 C++ ifstream 从文本文件中读取整数

我想从文本文件中读取图形邻接信息并将其存储到vector中。文件有任意行数每一行有任意数量的以'\n'结尾的整数例如,Firstline:014Secondline:10432Thridline:213Fourthline:3124Fifthline:4013如果我使用getline()一次读取一行,我如何解析该行(因为每行都有可变数量的整数)?有什么建议吗? 最佳答案 标准行读成语:#include#include#include#includestd::ifstreaminfile("thefile.txt");std::str

C++ ifstream 错误检查

我是C++新手,想在我的代码中添加错误检查,而且我想确保我使用了良好的编码实践。我使用以下命令将ASCII文件中的一行读入字符串:ifstreamparamFile;stringtmp;//openinputfiletmp.clear();paramFile>>tmp;//parsetmp如何进行错误检查以确保输入文件读取成功?我看到了从ASCII文件中读取的更复杂的方法。我这样做的方式“安全/稳健”吗? 最佳答案 paramFile>>tmp;如果该行包含空格,则不会读取整行。如果你想使用std::getline(paramFil

c++ - 从 ifstream 读取不会读取空格

我在C++中实现了一个自定义词法分析器,当尝试读取空白时,ifstream不会读出它。我正在使用>>逐个字符地阅读,所有的空格都消失了。有什么方法可以让ifstream保留所有的空白并把它读给我听?我知道在读取整个字符串时,读取将在空白处停止,但我希望通过逐个字符读取,我会避免这种行为。Attempted:.get(),很多答案都推荐,但是效果和std::noskipws一样,就是我现在把所有的空格都搞定了,但不是我需要lex一些结构的换行符。这是有问题的代码(扩展注释被截断)while(input>>current){always_next_structval=always_next

c++ - ifstream : check if opened successfully

一位同事刚刚告诉我这段代码:std::ifstreamstream(filename.c_str());if(!stream){throwstd::runtime_error("..");}会错的。他说如果打开成功,ifstream的计算结果为0。我的代码有效,但我想找到文档,但没有看到它说明如何检查打开是否成功。可以指点一下吗? 最佳答案 运算符!isoverloaded对于std::ifstream,所以你可以这样做。不过,在我看来,这是对运算符重载的可怕滥用(由标准委员会提出)。如果您只执行if(stream.fail()).